/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package view;

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.GridLayout;
import java.util.ArrayList;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import model.Alternativa;
import model.Criterio;
import util.Calculos;

/**
 *
 * @author Diana
 */
public class PintarMatriz {

    protected static PintarMatriz pintarMatriz;
    private static final String CARACTER_SEPARA_ESCALAS = ";";
    private static final String CARACTER_SEPARA_VALORES = ":";

    public static PintarMatriz getInstance() {
        if (pintarMatriz == null) {
            synchronized (PintarMatriz.class) {
                pintarMatriz = new PintarMatriz();
            }
        }
        return pintarMatriz;
    }

    public static JLabel obtenerLabelAlternativa(Alternativa alternativa) {
        JLabel label = new JLabel(modificarTamanoString(alternativa.getNombre()), JLabel.CENTER);
        label.setFont(new Font("Helvetica", Font.PLAIN, 16));
        label.setOpaque(true);
//        label.setBackground(Color.GRAY);
//        label.setBackground(new Color(213, 207, 207));
        return label;
    }

    public static JLabel obtenerLabelCriterio(Criterio criterio) {
        JLabel label = new JLabel(modificarTamanoString(criterio.getNombre() + "\n" + "max"), JLabel.CENTER);
        label.setFont(new Font("Helvetica", Font.PLAIN, 16));
        label.setOpaque(true);
//        label.setBackground(Color.GRAY);
//        label.setBackground(new Color(213, 207, 207));
        return label;
    }

    public static JPanel obtenerPanelCriterio(Criterio criterio) {

        JPanel content = new JPanel();

        JLabel label = new JLabel(modificarTamanoString(criterio.getNombre()), JLabel.CENTER);
        label.setFont(new Font("Helvetica", Font.PLAIN, 16));
        label.setSize(130, 10);
        label.setOpaque(true);

        content.add(label);
        content.add(obtenerPonderacionJLabel(criterio.getPonderacion()));
        content.add(obtenerMAximizarMinimizarJLabel(criterio.getOptimizacion()));

        return content;
    }

    public static JLabel obtenerMAximizarMinimizarJLabel(String optimizacion) {
        String flecha = "↑";

        if (optimizacion.equals(Criterio.MINIMIZAR)) {
            flecha = "↓";
        }
        JLabel labelCar = new JLabel(flecha, JLabel.CENTER);
        labelCar.setFont(new Font("Helvetica", Font.BOLD, 18));
        labelCar.setSize(8, 10);
        if (optimizacion.equals(Criterio.MINIMIZAR)) {
            labelCar.setForeground(Color.RED);
        } else {
            labelCar.setForeground(Color.GREEN);
        }
        labelCar.setOpaque(true);
        return labelCar;
    }

    public static JLabel obtenerPonderacionJLabel(double ponderacion) {
        JLabel labelPond = new JLabel("(" + Calculos.df.format(ponderacion) + ")", JLabel.CENTER);
        labelPond.setFont(new Font("Helvetica", Font.PLAIN, 16));
        labelPond.setSize(8, 10);
        labelPond.setForeground(Color.BLUE);
        labelPond.setName("label");
        labelPond.setOpaque(true);
        return labelPond;
    }

    public static JLabel obtenerdoubleJLabel(double ponderacion) {
        JLabel label = new JLabel(Calculos.df.format(ponderacion), JLabel.CENTER);
        label.setFont(new Font("Helvetica", Font.PLAIN, 16));
        label.setName("label");
        label.setOpaque(true);
        return label;
    }

    public static JLabel obtenerLabelComodin(String texto) {
        JLabel label = new JLabel(modificarTamanoString(texto), JLabel.CENTER);
        label.setFont(new Font("Helvetica", Font.PLAIN, 16));
        label.setOpaque(true);
//        label.setBackground(Color.GRAY);
//        label.setBackground(new Color(213, 207, 207));
        return label;
    }

    public static JTextField obtenerJTextField(String texto) {
        JTextField textField = new JTextField(texto);
        textField.setName("text");
        return textField;
    }

    public static JComboBox obtenerJComboBox(Criterio criterio) {

        JComboBox comboBox = new JComboBox();
        comboBox.setName("combo");
        String[] niveles = criterio.getEscalaMedida().getDescripcion().split(CARACTER_SEPARA_ESCALAS);

        for (int i = 0; i < niveles.length; i++) {
            String[] valores = niveles[i].split(CARACTER_SEPARA_VALORES);
            comboBox.addItem(valores[0] + "-" + valores[1]);
        }

        return comboBox;
    }

    public static JComboBox obtenerJComboBoxBinario() {

        JComboBox comboBox = new JComboBox();
        comboBox.setName("combo");

        comboBox.addItem("0");
        comboBox.addItem("1");

        return comboBox;
    }

    public static String modificarTamanoString(String entrada) {

        String respuesta = "";

        if (entrada.length() > 15) {
            respuesta = entrada.substring(0, 12) + "...";
        } else {
            respuesta = entrada;
        }

        return respuesta;
    }
    //CODIGO COMENTADO
    //            public void keyReleased(KeyEvent arg0) {
////                String cadena = "";
////
////                if (!texto.getText().equals("")) {
////
////                    char c = arg0.getKeyChar();
////
////                    if ((c != '0') && (c != '1') && (c != '2') && (c != '3') && (c != '4') && (c != '5') && (c != '6') && (c != '7') && (c != '8') && (c != '9')) {
////                        cadena = texto.getText().substring(0, texto.getText().length() - 1);
////                        texto.setText(cadena);
////                    }
////                }
//            }
}
